package geraeteverwaltung;


import java.util.ArrayList;


/**
 * Die Klasse zur Verwaltung der Geräteobjekte.
 * @author user
 */
public class GeraeteManager
{
	private Geraet geraet;
	private ArrayList<Geraet> geraeteliste;
	private final PersistenteDaten persistente_daten;
        
        
        /**
         * Konstruktor der Klasse.
         * Erstellt die Geraeteliste zur 
         * Aufnahme der Geraet-Objekte
         * Erstelle ein PersistenteDaten Objekt
         */
        public GeraeteManager () {
            geraeteliste = new ArrayList();
            persistente_daten = new PersistenteDaten();
            persistente_daten.setGeraeteManager(this);
        }


        /**
         * Liefert das zur Geraet-ID gehörende Aritkel-Objekt und
         * NULL, falls es nicht existiert.
         * @param geraeteID
         * @return geraet oder null
         */
        public Geraet getGeraet(Integer geraeteID)
	{
            try {
                geraet = geraeteliste.get(geraeteID - 1);
            } catch (IndexOutOfBoundsException e) {
                return null;
            }
            
            return geraet;
	}

        /**
         * Setzt die Geraeteliste des Geraetmanagers.
         * @param geraeteliste 
         */
        public void setGeraeteliste (ArrayList<Geraet> geraeteliste )
        {
            this.geraeteliste = geraeteliste;
        }

        /**
         * Liefert die Geraeteliste.
         * @return geraeteliste
         */
        public ArrayList<Geraet> getGeraeteliste ()
        {
            return geraeteliste;
           
        }
        
        /**
         * Erzeugt ein Geraet-Objekt und
         * fügt das Geraet-Objekt der Geraeteliste hinzu.
         */
        public void erstelleGeraet( )
	{
            boolean value;
            
            geraet = new Geraet();
            value = geraeteliste.add(geraet);
            
	}
	
        /**
         * Entfernt das gelieferte Geraet-Objekt aus der Geraeteliste und 
         * reorganisiert die Liste.
         * @param geraet 
         */
        public void entferneGeraet(Geraet geraet)
	{
            geraeteliste.remove(geraet);
            geraeteliste.trimToSize();
	}

        /**
         * Liefert die Größe der Geraeteliste und damit die Anzahl der Geraet 
         * @return Anzahl der Elemente
         */
        public Integer getGeraeteanzahl() {
            return geraeteliste.size();
        }
        
        /**
         * Ruft das Laden der Geraetdatei aus 
         * persistente_daten auf.
         */
        public void ladeGeraetebestand () {
            persistente_daten.ladeAusDatei("Geraete");
        }
        
        /**
         * Ruft das Schreiben der Geraetdatei aus
         * persistente_daten auf.
         */
        public void speichereGeraetebestand () {
            persistente_daten.schreibeInDatei("Geraete");
        }
        
} //Ende Klasse GeraeteManager
